/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Bruno
 */
class ThreadCampoDuplo extends Thread {

    public void run() {
        for (;;) {
            if (CadastroSenhaProprietario.campoSenhaAntiga.getText().length() > 15) {
                CadastroSenhaProprietario.campoSenhaAntiga.setText(CadastroSenhaProprietario.campoSenhaAntiga.getText().substring(0, 15));
            }
            if (CadastroSenhaProprietario.campoSenhaNova.getText().length() > 15) {
                CadastroSenhaProprietario.campoSenhaNova.setText(CadastroSenhaProprietario.campoSenhaNova.getText().substring(0, 15));
            }
            try {
                sleep(300);
            } catch (InterruptedException ex) {
                Logger.getLogger(ThreadCampoDuplo.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

public class CadastroSenhaProprietario extends javax.swing.JDialog {

    String senhaAntiga;
    ThreadCampoDuplo max15 = new ThreadCampoDuplo();

    /**
     * Creates new form NewJFrame
     */
    public CadastroSenhaProprietario() {
        initComponents();
        max15.start();
        File arquivo = new File("x01.sp");
        if (arquivo.exists()) {
            try { //Cria um fluxo para ler do arquivo as atividades ja cadastradas
                ObjectInputStream leitorArquivo = new ObjectInputStream(new FileInputStream("x01.sp"));
                senhaAntiga = (String) leitorArquivo.readObject(); //Salva o conteudo do arquvo no ArrayList de atividades
                leitorArquivo.close();
            } catch (IOException e) {
            } catch (ClassNotFoundException ex) {
            }
        } else {
            textoTituloJanela.setText("Definir Primeira Senha do Proprietário");
            textoInstrucoes.setText("Para definir sua primeira senha, digite-a no campo abaixo. A senha pode conter letras e números e no máximo 15 caracteres.");
            textoSenhaNova.setText("Primeira Senha:");
            textoSenhaAntiga.setVisible(false);
            campoSenhaAntiga.setVisible(false);
        }
        setModal(true);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        textoTituloJanela = new javax.swing.JLabel();
        botaoSalvar = new javax.swing.JButton();
        botaoCancelar = new javax.swing.JButton();
        textoInstrucoes = new javax.swing.JLabel();
        textoSenhaNova = new javax.swing.JLabel();
        textoSenhaAntiga = new javax.swing.JLabel();
        campoSenhaNova = new javax.swing.JTextField();
        campoSenhaAntiga = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("Cadastro Senha do Proprietário - PowerPark");

        textoTituloJanela.setFont(new java.awt.Font("Calibri", 1, 14)); // NOI18N
        textoTituloJanela.setText("Modificar Senha do Proprietário");

        botaoSalvar.setText("Salvar");
        botaoSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoSalvarActionPerformed(evt);
            }
        });

        botaoCancelar.setText("Cancelar");
        botaoCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoCancelarActionPerformed(evt);
            }
        });

        textoInstrucoes.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        textoInstrucoes.setText("Para definir uma nova senha, digite a senha antiga e a nova senha. A senha pode conter letras e números e no máximo 15 caracteres.");

        textoSenhaNova.setFont(new java.awt.Font("Calibri", 1, 12)); // NOI18N
        textoSenhaNova.setText("Nova Senha:");

        textoSenhaAntiga.setFont(new java.awt.Font("Calibri", 1, 12)); // NOI18N
        textoSenhaAntiga.setText("Senha Antiga:");

        campoSenhaNova.setColumns(15);

        campoSenhaAntiga.setColumns(15);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(textoTituloJanela)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(botaoCancelar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botaoSalvar))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(textoInstrucoes)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(textoSenhaAntiga)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(campoSenhaAntiga, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(textoSenhaNova)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(campoSenhaNova, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoTituloJanela)
                    .addComponent(botaoSalvar)
                    .addComponent(botaoCancelar))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(textoInstrucoes)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoSenhaNova)
                    .addComponent(textoSenhaAntiga)
                    .addComponent(campoSenhaNova, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(campoSenhaAntiga, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-660)/2, (screenSize.height-135)/2, 660, 135);
    }// </editor-fold>//GEN-END:initComponents

    private void botaoSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoSalvarActionPerformed
        if (campoSenhaNova.getText().length() > 15) {
        } else {
            File arquivo = new File("x01.sp");
            if (arquivo.exists()) { //Verifica se o arquivo de senha já existe. Caso exista...
                if ((campoSenhaAntiga.getText().equalsIgnoreCase("")) || (campoSenhaNova.getText().equalsIgnoreCase(""))) {
                    JOptionPane.showMessageDialog(null, "Preencha as senhas corretamente!");
                } else {
                    if (senhaAntiga.equals(campoSenhaAntiga.getText())) {
                        String senha = campoSenhaNova.getText();
                        try {
                            ObjectOutputStream escritorArquivo = new ObjectOutputStream(new FileOutputStream("x01.sp")); //Fluxo para gravar no arquivo de atividades
                            escritorArquivo.writeObject(senha); //Grava o ArrayList de atividades no arquivo
                            escritorArquivo.close();
                            JOptionPane.showMessageDialog(null, "Senha alterada com sucesso!");
                            max15.stop();
                            dispose();
                        } catch (IOException e) {
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "Senha antiga digitada está incorreta!");
                    }
                }
            } else { //Caso o arquivo de senha não exista ele cria o arquivo
                if (campoSenhaNova.getText().equalsIgnoreCase("")) {
                    JOptionPane.showMessageDialog(null, "Você não pode deixar o campo de senha em branco.");
                } else {
                    String senha = campoSenhaNova.getText();
                    try {
                        ObjectOutputStream escritorArquivo = new ObjectOutputStream(new FileOutputStream("x01.sp")); //Fluxo para gravar no arquivo de atividades
                        escritorArquivo.writeObject(senha); //Grava o ArrayList de atividades no arquivo
                        escritorArquivo.close();
                        JOptionPane.showMessageDialog(null, "Primeira senha cadastrada com sucesso!");
                        max15.stop();
                        dispose();
                    } catch (IOException e) {
                    }
                }
            }
        }
    }//GEN-LAST:event_botaoSalvarActionPerformed

    private void botaoCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoCancelarActionPerformed
        max15.stop();
        dispose();
    }//GEN-LAST:event_botaoCancelarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botaoCancelar;
    private javax.swing.JButton botaoSalvar;
    static javax.swing.JTextField campoSenhaAntiga;
    static javax.swing.JTextField campoSenhaNova;
    private javax.swing.JLabel textoInstrucoes;
    private javax.swing.JLabel textoSenhaAntiga;
    private javax.swing.JLabel textoSenhaNova;
    private javax.swing.JLabel textoTituloJanela;
    // End of variables declaration//GEN-END:variables
}
